type Empty = " " | "\n" | "\t";
type Trim<S extends string> = S extends `${Empty}${infer Rest}`
  ? Trim<Rest>
  : S extends `${infer First}${Empty}`
  ? Trim<First>
  : S;
